/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/* 
 * File:   CSwitchManager.h
 * Author: Administrator
 *
 * Created on 2017年11月22日, 下午6:02
 */

#ifndef CSWITCHMANAGER_H
#    define CSWITCHMANAGER_H
#include"PublicTool.h"
#include"PublicRandom.h"
#include"CSwitchifTable.h"
#include"CSwitchData.h"
#include"CMultiThreadManager.h"
#include"WorkSnmpApi.h"
typedef std::map<std::string,CSwitchifTable*>MAPSWITCHLIST;
class CSwitchManager{
    SETIPLIST m_iplist;   //总IP列表
    MAPSNMPSYSPACKET m_switchinfo;//交换机信息
    SETIPLIST m_alivelist;//可采集的IP列表
    PublicRandom m_ranlist;
    MAPSWITCHLIST m_iplistinfo;
    PublicLock    m_Mutex;
public:
    CSwitchManager();
    virtual ~CSwitchManager();
//更新交换机列表    
    void UpdateSwitchIPLIST();
//更新交换机基本信息
    void UpdateSwitchSysInfo();    
//更新交换机端口信息
    void UpdateSwitchifTable();
//更新交换机信息    
    void UpdateSwitchDataTable();
//更新交换机端口带宽
#if 0    
    void UpdateSwitchifFlow(time_t starttime,time_t endtime);
#endif    
//从数据库获取交换机列表
    static  MAPSNMPSYSPACKET GetAllSwitchInfo();
//执行一次    
    void RunOnce();
    void RunOnceData();
private:
//构建队列
    bool MakeList();
//判断队列是否为空
    bool IsListEmpty();
};

#endif /* CSWITCHMANAGER_H */

